// component/InputAreaWithArrow/InputAreaWithArrow.js
Component({
  /**
   * 组件的属性列表
   */
  properties: {
    // 底部分隔线
    showBottomLine: {
      type: Boolean,
      value: true
    },

    // 输入框前提示文案
    tipGlobal: {
      type: String,
      value: ""
    },

    // 输入框是否可以获取焦点
    inputDisabled: {
      type: Boolean,
      value: false
    },

    // 箭头前提示文案
    tipBeforeArrowText: {
      type: String,
      value: ""
    },

    // 是否展示箭头
    showArrow: {
      type: Boolean,
      value: false
    },

    // 输入框默认
    inputValue: {
      type: String,
      value: "",
      observer: function (newVal, oldVal, changedPath) {
        if (this.properties.tipBeforeArrowText.length > 0) {
          // 箭头前提示文案的显隐控制
          if (!this.data.isHiddenArrowText && newVal.length > 0) {
            this.setData({
              isHiddenArrowText: true
            })
          } else if (this.data.isHiddenArrowText && newVal.length == 0) {
            this.setData({
              isHiddenArrowText: false
            })
          }
        }
      }
    },

    // 占位提示文本
    placeholder: {
      type: String,
      value: ""
    },

    // 获取焦点
    getFocus: {
      type: Boolean,
      value: false
    },

    // 父控件指定再回传给父控件(用于集中处理事件)
    tag: {
      type: String,
      value: 0
    },

    // input 的类型
    keyboardType: {
      type: String,
      value: "text"
    },

    // 最大输入长度
    maxlength: {
      type: Number,
      value: -1
    },
  },

  /**
   * 组件的初始数据
   */
  data: {
    isHiddenArrowText: false, // 是否隐藏箭头前提示文案
  },

  /**
   * 组件的方法列表
   */
  methods: {
    // 输入框发生变化(焦点变化或)
    valueChanged: function(e) {

      this.properties.inputValue = e.detail.value;

      if (this.properties.tipBeforeArrowText.length > 0) {
        // 箭头前提示文案的显隐控制
        if (!this.data.isHiddenArrowText && this.properties.inputValue.length > 0) {
          this.setData({
            isHiddenArrowText: true
          })
        } else if (this.data.isHiddenArrowText && this.properties.inputValue.length == 0) {
          this.setData({
            isHiddenArrowText: false
          })
        }
      }

      let resp = new Object();
      resp.value = this.properties.inputValue;
      resp.tag = this.properties.tag;
      resp.actionType = e.type; // 输入框变化类型input/blur
      this.triggerEvent('onValueChanged', resp)
    },
  }
})